<?php
namespace app\index\controller;

use alipay\AlipayTradeService;
use app\common\controller\HomeBase;
use think\facade\Log;

class Notify extends HomeBase
{
    public function wxpay()
    {




    }


    public function alipay()
    {
//        file_put_contents("alipay.txt",json_encode($_POST));
        Log::info(var_export($_POST,true));

//        1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号，
//        2、判断total_amount是否确实为该订单的实际金额（即商户订单创建时的金额），
//        3、校验通知中的seller_id（或者seller_email) 是否为out_trade_no这笔单据的对应的操作方（有的时候，一个商户可能有多个seller_id/seller_email）
//        4、验证app_id是否为该商户本身。

        $arr = $_POST;
        $alipaySevice = new AlipayTradeService();

        if ($alipaySevice->checkSign($arr))
        {
            Log::error($_POST['out_trade_no'] ." 支付宝验签成功");
            //商户订单号
            $out_trade_no = $this->request->param('out_trade_no');
            //支付宝交易号
            $trade_no = $this->request->param('trade_no');
            // 交易金额
            $total_amount = $this->request->param('total_amount');
            // 实付金额
            $receipt_amount = $this->request->param('receipt_amount');
            // 支付者id
            $seller_id = $this->request->param('seller_id');
            //交易状态
            $trade_status = $_POST['trade_status'];
            // 交易成功
            if ($trade_status == 'TRADE_SUCCESS') {

                $order = model('order')->where(['order_id' => $out_trade_no])->find();
                if ($order)
                {
                    if ($order['pay_amount'] == $total_amount)
                    {
                        $res = model('order')->save([
                            'seller_id' => $seller_id,
                            'pay_id' => $trade_no,
                            'status' => 1,  // 1 为支付成功
                            'pay_time' => time(),
                        ],['order_id' => $out_trade_no]);
                        if ($res)
                        {
                            $vip = model('vip')->where(['id' => $order['vip_id']])->find();
                            // 更新用户信息
                            model('user')->save([
                                'vip_id' => $order['vip_id'],
                                'vip_time' => time() + $vip['day'] * 3600 * 24
                            ],['id' => $order['user_id']]);

                            Log::info($out_trade_no ." 订单更新成功");
                        }else {
                            Log::info($out_trade_no ." 订单更新失败");
                        }
                    }else {
                        Log::info($out_trade_no ." 支付金额不正确");
                    }
                }else{
                    Log::error($out_trade_no ." 订单号不存在");
                }

                //请不要修改或删除
                echo "success";
            }else {
                //验证失败 请不要修改或删除
                echo "fail";
            }
        }else {
            Log::error($_POST['out_trade_no'] ." 支付宝验签失败");
        }
    }

}
